Даны целые числа a и k.
Выведите число, которое получается из а
инвертированием k-го бита.
Вход. В одной строке заданы два
числа a и k (0 ≤ a ≤ 109).
Выход. Выведите число a с
инвертированным k-ым битом.
Пример входа |
Пример выхода |
15 2 |
11 |
элементарная задача – битовые операции
Известно, что
степень двойки можно вычислить сдвигом влево: 2k = 1 << k.
Искомым результатом будет значение a XOR (1 << k).
Читаем входные данные. Вычисляем и выводим ответ.
scanf("%d %d",&a,&k);
a
= a ^ (1 << k);
printf("%d\n",a);
#include <cstdio>
#include <bitset>
using namespace std;
int a, k, res;
bitset<32> bset;
int main()
{
scanf("%d
%d", &a, &k);
bset = (bitset<32>)a;
bset.flip(k);
res = (int)bset.to_ulong();
printf("%d\n", res);
return 0;
}
Python реализация
a, k = map(int,input().split())
a = a ^ (1 << k)
print(a)